Shader Graph入門

June 20, 2022


現時点での最新バージョン(10.0.0)のマニュアルを読みながらShaderGraphを使ってみようと思います https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/First-Shader-Graph.html

グラフの作成

ShaderGraphを利用する上でまずは専用のアセットを用意します ProjectViewの任意のフォルダから **Create > Schaders **

Blank Shader Graph を選択するとなにもない空の状態のアセットが作成されます

ダブルクリックかInspectorのOpenShaderEditorでEditorを開きます AFB3E5B98054151BFC28CEB0DE349DA5

BlankShaderGraph C36FE672202B9B3B78500E5CF66CF389

今回は予めいくつかの手順が構築されている URP > List Shader Graph を選択してみます 1D1F6E23A52801F72D15C2252CD4ACF1

ノードの作成

新しくノードを作成します。ノードは1作業単位を表現します **右クリック > Create Node > Color **を選択 0541D2134ABD9037599A4B484D22EC62

色情報をFragment処理につなげてみます 視覚的簡単に接続可能です。

Lit で作成したときは Fragmentは入力が6つ存在しています

  • Base Color
  • Normal(Trangent Space)
  • Metalic
  • Smoothness
  • Emission
  • Ambient Occlusion

とりあえず色を変えたいので、ColorとBaseColorをつなげます。 ColorのOutputSlotから FragmentのBaseColorのInputSlotにドラッグ (Nodeコネクタをそれぞれ xxx Slot と言うようです)

8F4D32F428BD56A5C697F14F96DD18F5

カラーバークリックしてピッカーで好きな色に変えてみると、Previewに即時反映されていることが確認できます これが3Dオブジェクトに反映されます

保存

左上の Save Asset を押して現在の作業内容を保存

マテリアルの作成

シェーダーを作成したのでこれをオブジェクトに適用させます。 そのためにはマテリアルが必要なため Create > Material で空のマテリアルを作成

Shaderを選択する手順と同じくShaderの中に ShaderGraph 項目が存在しているため、そこから今回自分で作成したShaderGraphを選択

反映されました B28958554FC0DE13546460C9BBB3A23B

そのマテリアルをあとは適当なモデルに差し込むだけです 0B72944B7092097859E25296568D9AE1

プロパティを使用してグラフを編集

カラーの設定が可能になりましたが、色を編集するためには都度ShaderGrapthを開かなければなります Materialから色を編集するためにプロパティを作成します

ShaderGraphからブラックボードと呼ばれるPropertyの入れ物から **+ > Color **を選択 名前はそのまま Color にしておきます AF9568C523A54E1B7A28249E3855D948

プロパティを選択すると Graph Inspector の Node Settings にオプションが表示されます 781031623B44BFAA995DCFDFC9D8E49B

  • Name : プロパティの名前
  • Reference : C#スクリプトからアクセスする時の識別名
  • Default : プロパティのデフォルト値
  • Mode : プロパティ種によってここは変更されるようです。 Colorの場合 Default or HDR
  • Precision : 精度
    • 精度については別途記事化したいです。とりあえずデフォルトのまま
  • Exposed : ONにするとマテリアルのインスペクタから可視化される
  • Override Property Declaration : 更に高度な設定を使用する場合はチェックを入れる
    • これも別記事で取り扱いたい。とりあえずデフォルトのまま

プロパティをグラフに反映させる方法は ・ドラッグ&ドロップでグラフに配置する ・**右クリック > Create Node > Properties **から選択する の2種類の方法から取れます

BaseColoにつなげます 14D2FB0305DF32335A8A2B5E3BD80EFD

あとはプロパティがインスペクタに公開されるため動的な変更が可能となりました

3305C3E4835CF9735FA92CCCA912F8E8